package com.ly.base.chapter03;

import java.util.stream.Stream;

/**
 * 合并与截取
 */
public class AEConcatSplitDemo {

    public static void main(String[] args) {
        //1、合并
        Stream<Integer> s1 = Stream.of(1,2,3);
        Stream<Integer> s2 = Stream.of(4,5);

        Stream<Integer> concat = Stream.concat(s1, s2);
//        concat.forEach(System.out::println);//1,2,3,4,5

        System.out.println("==============================");

        /**
         * 2、截取
         *
         *  skip(long n)     跳过 n 个数据，保留剩下的数据
         *  limit(long n)    保留 n 个数据，剩下的不要
         */
//        concat.skip(2).forEach(System.out::println);//3,4,5
//        concat.limit(2).forEach(System.out::println);//1,2
//        concat.skip(2).limit(2).forEach(System.out::println);//3,4


        System.out.println("================================");
        /**
         * 3、截取 - 根据条件按确定截取位置
         *
         * takeWhile(Predicate p)    条件成立保留，一旦条件不成立，剩下的不要
         * dropWhile(Predicate p)    条件成立舍弃，一旦条件不成立，剩下的保留
         */
//        concat.takeWhile(t -> t < 3).forEach(System.out::println);//1，2
//        concat.takeWhile(t -> t > 3).forEach(System.out::println);//什么都没有

//        concat.dropWhile(x -> x<3).forEach(System.out::println);//3,4,5
        concat.dropWhile(x -> x>3).forEach(System.out::println);//1,2,3,4,5
    }
}
